//参考：
//https://mp.weixin.qq.com/s/eb3d8a1es0WIiQW41BiwPA

//打开目标应用
var app_name = '微信';
launchApp(app_name)

//保持屏幕长亮
device.keepScreenOn()
console.show();


// 定义一个方法，用于搜索当前群聊记录中的所有红包记录

// 首先，通过 id 和类名获取所有的红包元素列表

// 接着，遍历红包元素列表，判断红包控件是否为一个有效的红包

// 最后，使用 click() 方法点击红包对象，弹出抢红包对话框

//每一个红包的描述信息（自己输入）
var red_package_tag = "ape"

function searchNewRedpacket() {
    //通过className+id，共同查找元素
    // var rp_msg_list = className("android.widget.TextView").id(red_package_tag).find();
    var rp_msg_list = className("android.widget.LinearLayout").id(red_package_tag).depth(20).find();
    if (rp_msg_list.length != 0) {
        log("检测到的红包个数: " + rp_msg_list.length);

        //遍历红包对象
        for (var i = 0; i < rp_msg_list.length; i++) {
            var rp_u1 = rp_msg_list[i];
            var rp_u1_parent = rp_u1.parent()
            // 判断是否为一个【有效红包】
            if (rp_u1_parent != null && rp_u1_parent.childCount() == 1) {
                log("发现新红包，准备开抢。。。");
                //通过元素的坐标去点击
                click(rp_u1.bounds().centerX(), rp_u1.bounds().centerY())
                log("恭喜！抢到一个红包。。。。")
            } else {
                log("无效红包。。。")
            }
        }
    } else if (rp_msg_list.empty()) {
        //元素列表为空
        log("未检测到红包消息" + rp_msg_list.length);
    } else {
        return;
    }
}

//打开红包开抢
function openNewRedPacket() {
    //通过desc描述找到元素
    var draw = desc("开").findOne(500);
    if (draw != null) {
        draw.click();
    } else {
        log("过期之类无效红包");
    }
}

// 循环及异常处理
// 定义一个方法，用于处理下面 3 种页面，保证遇到异常或操作完成后，
// 立即返回到聊天页面
//返回到上一页
function back_page() {
    //红包抢完了(对话框)
    var red_end = id("f4b").textContains("手慢了，红包派完了").findOnce()
    if (red_end) {
        log("返回一")
        back()
    }
    //红包领取页面--自己抢到
    var red_fp = desc("已存入零钱，可直接提现").findOnce()
    if (red_fp) {
        log("返回二")
        back()
    }

    //红包领取页面--被别人抢光
    var red_other = id("eyx").textContains("被抢光").findOnce()
    if (red_other) {
        log("返回三")
        back()
    }
}

// 上面定义了 3 个方法，我这里将他们
// 放到 3 个线程中异步执行，提升执行效率

//线程一：点击红包进入
threads.start(function () {
    //在新线程执行的代码(子线程)
    while (true) {
        //寻找红包，并进入
        searchNewRedpacket()
    }
});

//线程二：点击【开】按钮）
threads.start(function () {
    while (true) {
        openNewRedPacket();
    }
})

//线程三：如果红包抢完、抢到，马上返回
threads.start(function () {
    while (true) {
        back_page()
    }
})
// console.show()
// var red_package_tag = "ape"
// var rp_msg_list = className("android.widget.LinearLayout").id(red_package_tag).depth(20).findOne();
// click(rp_msg_list.bounds().centerX(), rp_msg_list.bounds().centerY())
// log(rp_msg_list)
